package com.wzl.algorithm;

import java.lang.reflect.Array;

/**选择排序, 数组不稳定, 链表稳定
 * 选择排序思路：
 * 1. 在未排序序列中找到最小（大）元素，存放到排序序列的起始位置
 * 2. 从剩余未排序元素中继续寻找最小（大）元素，然后放到已排序序列的末尾
 * 3. 以此类推，直到所有元素均排序完毕
 *
 * @author weiZhiLin
 * @version 1.0
 * @date 2020/1/9 13:36
 */
public class SelectSort {
    public static int[] sort(int[] a) {
        for (int i = 0; i < a.length; i++) {
            int min = i;
            // 注意 j=i+1
            for (int j = i+1; j < a.length; j++) {
                // 注意这里是 a[min] 不是 a[i]
                if (a[min] < a[j])
                    min = j;
            }
            if (min != i) {
                a = SortUtils.arraySwap(a, min, i);
            }
        }
        SortUtils.printArr(a);
        return a;
    }
}
